package com.qianphone.mylbs;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;
import com.baidu.mapapi.map.BaiduMap.OnMarkerDragListener;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.Marker;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;

//经度 113.933179  纬度  22.537005
public class MyLbsActivity extends Activity implements OnMarkerDragListener, OnMarkerClickListener {

	private MapView mapView;
	private BaiduMap map;
	private Marker markerA;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 这句话，必须在setContentView之前调用
		SDKInitializer.initialize(getApplicationContext());
		setContentView(R.layout.mylbs_activity);

		// 把图片资源解析成为一个地图上的标识图标
		BitmapDescriptor pointAIcon = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);

		mapView = (MapView) findViewById(R.id.mapView);

		// 获取地图对象
		map = mapView.getMap();
		// 给地图设置覆盖标记点的点击事件
		map.setOnMarkerClickListener(this);
		map.setOnMarkerDragListener(this);

		// 设置地图缩放到14倍
		MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(25f);
		map.setMapStatus(msu);

		// 让地图默认显示到深圳大学的坐标
		setMapCenter(22.537171, 113.942732);

		// add marker overlay 添加一个标记点的经纬度坐标
		LatLng llA = new LatLng(22.537171, 113.942732);

		// 创建一个标记点的对象
		MarkerOptions ooA = new MarkerOptions();
		// 把位置信息给a点设置过去
		ooA.position(llA);
		// 设置覆盖物的图标
		ooA.icon(pointAIcon);

		ooA.zIndex(9);
		// 设置覆盖物可以进行拖拽
		ooA.draggable(true);

		// 把设置好属性的覆盖物的对象传给地图对象，地图对象会返回一个标记点对象
		markerA = (Marker) (map.addOverlay(ooA));
	}

	// 设置地图的中心点并且移动到该中心点的方法
	private void setMapCenter(double latitude, double longitude) {
		MyLocationData.Builder builder = new MyLocationData.Builder();
		builder.latitude(latitude);
		builder.longitude(longitude);
		MyLocationData locationData = builder.build();
		map.setMyLocationData(locationData);

		LatLng ll = new LatLng(locationData.latitude, locationData.longitude);
		MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
		map.animateMapStatus(u);
	}

	@Override
	protected void onResume() {
		super.onResume();
		mapView.onResume();
	}

	@Override
	protected void onPause() {
		super.onPause();
		mapView.onPause();
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		mapView.onDestroy();
	}

	/**
	 * 当地图上的标记点被点击的时候会被调用
	 */
	@Override
	public boolean onMarkerClick(Marker arg0) {
		Toast.makeText(this, "标记点被点击", Toast.LENGTH_SHORT).show();
		return false;
	}

	@Override
	public void onMarkerDrag(Marker arg0) {

	}

	@Override
	public void onMarkerDragEnd(Marker marker) {
		Toast.makeText(
				this,
				"拖拽结束，新位置：" + marker.getPosition().latitude + ", " + marker.getPosition().longitude,
				Toast.LENGTH_LONG).show();
		System.out.println("纬度：" + marker.getPosition().latitude + "经度："
				+ marker.getPosition().longitude);
	}

	@Override
	public void onMarkerDragStart(Marker arg0) {

	}
}